#pragma once

#include <AVUIPage.h>

namespace AVUI {

class DispatcherTimer;
class NavigatingCancelEventArgs;
class NavigationWindow;

class TransitioningPage : public Page
{
public:
    TransitioningPage() { };
    ~TransitioningPage() { };

    DECLARE_ELEMENT(TransitioningPage, Page);

    DECLARE_DEPENDENCY_PROPERTY(TransitionInDelay);
    TimeSpan get_TransitionInDelay() { return AVUI::UnboxValue<TimeSpan>(GetValue(get_TransitionInDelayProperty())); }
    void set_TransitionInDelay(const TimeSpan& value) { SetValue(get_TransitionInDelayProperty(), AVUI::BoxValue(value)); } 

    DECLARE_DEPENDENCY_PROPERTY(TransitionOutDelay);
    TimeSpan get_TransitionOutDelay() { return AVUI::UnboxValue<TimeSpan>(GetValue(get_TransitionOutDelayProperty())); }
    void set_TransitionOutDelay(const TimeSpan& value) { SetValue(get_TransitionOutDelayProperty(), AVUI::BoxValue(value)); } 

    IMPLEMENT_ROUTED_EVENT(TransitionIn, RoutedEventArgs, RoutingStrategy::Direct);
    IMPLEMENT_ROUTED_EVENT(TransitionOut, RoutedEventArgs, RoutingStrategy::Direct);

private:
    static void StaticConstructor();
};


}; // namespace AVUI
 
